package net.eyra.negocio.entidades.gestion.propietarios;

import java.util.List;

import net.eyra.negocio.entidades.gestion.direccion.Direccion;
import net.eyra.negocio.entidades.gestion.propietarios.facturas.Factura;

public class Propietario implements Comparable<Propietario> {

    private int id_propietario;
    private String nombre;
    private String apellido1;
    private String apellido2;
    private String nif;
    private String telefono;
    private String movil;
    private String email;
    private String observaciones;
    private Direccion direccion;
    private List<CuentaBancaria> cuentas_bancarias;
    private List<Propiedad> propiedades;
    private List<Factura> facturas;
    private EstadoPropietario estado_propietario;
    private DatosFacturacion datos_facturacion;
    private String sociedad;
    private String nombre_sociedad;

    public Propietario() {
    }

    public Propietario(int id_propietario) {
        this.id_propietario = id_propietario;
    }

    public String getApellido1() {
        return apellido1;
    }

    public String getApellido2() {
        return apellido2;
    }

    /**
     * @return Devuelve la primera cuenta bancaria activa (se supone que sólo devería haber una) o 'null' si no tiene ninguna cuenta bancaria
     */
    public CuentaBancaria getCuentaBancariaActiva() {
        if (this.cuentas_bancarias != null) {
            for (int x = 0; x < this.cuentas_bancarias.size(); x++) {
                if (cuentas_bancarias.get(x).getActiva().equals("S")) return cuentas_bancarias.get(x);
            }
        }

        return null;
    }

    public List<CuentaBancaria> getCuentas_bancarias() {
        return cuentas_bancarias;
    }

    public String getEmail() {
        return email;
    }

    public int getId_propietario() {
        return id_propietario;
    }

    public String getMovil() {
        return movil;
    }

    public String getNif() {
        return nif;
    }

    public String getNombre() {
        return nombre;
    }

    public String getObservaciones() {
        return observaciones;
    }

    public List<Propiedad> getPropiedades() {
        return propiedades;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setApellido1(String apellido1) {
        this.apellido1 = apellido1;
    }

    public void setApellido2(String apellido2) {
        this.apellido2 = apellido2;
    }

    public void setCuentas_bancarias(List<CuentaBancaria> cuentas_bancarias) {
        this.cuentas_bancarias = cuentas_bancarias;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setId_propietario(int id_propietario) {
        this.id_propietario = id_propietario;
    }

    public void setMovil(String movil) {
        this.movil = movil;
    }

    public void setNif(String nif) {
        this.nif = nif;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public void setObservaciones(String observaciones) {
        this.observaciones = observaciones;
    }

    public void setPropiedades(List<Propiedad> propiedades) {
        this.propiedades = propiedades;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    /**
     * Regresa el nombre y apellidos del propietario en formato de única cadena
     */
    public String toString() {
        return this.nombre + " " + this.apellido1 + " " + this.apellido2;
    }

    public int compareTo(Propietario propietario) {
        Propietario _propietario = propietario;
        if (apellido1.compareTo(_propietario.getApellido1()) == 0) {
            if (apellido2.compareTo(_propietario.getApellido2()) == 0) return nombre.compareTo(_propietario.getNombre());
            return apellido2.compareTo(_propietario.getApellido2());
        }
        return apellido1.compareTo(_propietario.getApellido1());
    }

    public EstadoPropietario getEstado_propietario() {
        return estado_propietario;
    }

    public void setEstado_propietario(EstadoPropietario estadoPropietario) {
        estado_propietario = estadoPropietario;
    }

    public DatosFacturacion getDatos_facturacion() {
        return datos_facturacion;
    }

    public void setDatos_facturacion(DatosFacturacion datosFacturacion) {
        datos_facturacion = datosFacturacion;
    }

    public List<Factura> getFacturas() {
        return facturas;
    }

    public void setFacturas(List<Factura> facturas) {
        this.facturas = facturas;
    }

    public String getSociedad() {
        return sociedad;
    }

    public void setSociedad(String sociedad) {
        this.sociedad = sociedad;
    }

    public String getNombre_sociedad() {
        return nombre_sociedad;
    }

    public void setNombre_sociedad(String nombreSociedad) {
        nombre_sociedad = nombreSociedad;
    }

    public Direccion getDireccion() {
        return direccion;
    }

    public void setDireccion(Direccion direccion) {
        this.direccion = direccion;
    }

}
